home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Sound Cards
/
Programming Sound Cards.iso
/
sound_56
/
typdef.inc
< prev
next >
Wrap
Text File
|
1995-01-01
|
7KB
|
123 lines
TYPE { look also for assembler structurs in 'GENERAL.DEF' - must be equal !! }
DWord= record { you can access dword values now in different ways :
however it's never used :) for some action }
case integer of
0: (DD:Longint);
1: (LX,HX:word);
2: (Rea,Int:Word);
end;
THeader = record name:array[0..27] of char;
charEOF:char; { should be 1Ah }
filetyp:byte;
dummy1 :word;
ordnum :word;
Insnum :word;
Patnum :word;
Flags :word;
CWTV :word; { bit 12 = 1 -> created with screamtracker }
{ bit 11..0 -> tracker version:
11..8 = major version,7..0 = minor version }
FFv :word; { fileformatversion }
SCRM_ID:array[0..3] of char; { should be 'SCRM' }
gvolume:byte; { global volume }
initialspeed:byte;
initialtempo:byte;
mvolume:byte; { mastervolume }
dummy2 :array[0..9] of byte;
special:word; { not used up2now }
channelset:array[0..31] of byte;
end;
PSmpHeader = ^TSmpHeader;
TSmpHeader = record typ:byte;
dosname:array[0..11] of char;
hi_mempos:byte;
mempos:word;
length:longint;
loopbeg:longint;
loopend:longint;
vol:byte;
dummy1:byte;
packinfo:byte;
Flags:byte;
c2speed:longint;
dummy2:longint;
GUS_addr:word;
SB_Flags:word;
SB_last:longint;
name:array[0..27] of char;
SCRS_ID:array[0..3] of char;
end;
PAdlHeader = ^TAdlHeader;
TAdlHeader = record typ:byte;
dosname:array[0..11] of char;
dummy1:array[0..2] of byte;
Data:array[0..11] of byte;
Vol:byte;
Dsk:byte;
dummy2:word;
C2spd:longint;
dummy3:array[0..11] of byte;
name:array[0..27] of char;
SCRI_ID:array[0..3] of char;
end;
TCHANNEL = record
{ general switches : }
enabled :boolean; { byte: flag if =0 then nothing to mix at the moment }
channeltyp :byte; { 0=off,1=left,2=right,3,4=adlib ... if 0,3,4 -> everything ignored ! }
{ current sampledata : }
InstrSEG :word; { pointer to current instrument data }
SampleSEG :word; { DOS segment of current sampledata }
InstrNo :byte; { number of instrument is currently playing }
Note :byte; { Notenumber is currently playing (except if effects change it...) }
{ copy of sampledata (maybe it differs a bit): }
SampleVol :byte; { current sample volume }
sLoopflag :boolean; { flag if we have to loop sample }
sSmpstart :word; { default is 0, but if there's a set sample offset, it changes }
sLoopstart :word; { loop start of current sample =0ffffh if no loop }
sLoopend :word; { loop end of current sample }
sCurPos :dword; { fixed point value for current position in sample }
sStep :dword; { fixed point value of frequency step (distance of one step
depends on period we play currently) }
sPeriod :word; { st3 period ... you know these amiga values (look at tech.doc of ST3) }
{ period does no influence playing a sample direct, but it's for sliding etc. }
lower_border:word; { B-7 or B-5 period for current instrument to check limits }
upper_border:word; { C-0 or C-3 period for current instrument to check limits }
{ effect info : }
command :word; { 2 times effectnumber (for using a jmptable) }
cmd2nd :word; { 2 times additional command for multiple effects }
parameter :byte; { just the parameters }
{ data for handling effects : }
continueEf :boolean; { Flag if we should continue effect - vibrato,tremolo }
VibtabOfs :word; { yo for each channel its own choise (default = OFS sinuswave) }
TrmtabOfs :word; { = Offset of wavetable for tremolo }
tablepos :byte; { <- we reset this if a effect starts uses such a table }
VibPara :byte; { <- for dual command Vib + Vol }
PortPara :byte; { <- for dual command Port + Vol }
OldPeriod :word; { save that value for some effects }
Oldvolume :byte; { save that value for tremolo }
WantedPeri :word; { <- period to slide to with Portamento }
ArpegPos :byte; { which of those 3 notes we currently play ... }
note1 :byte; { \ }
note2 :byte; { -+ note : 3 notes we do arpeggio between }
Step0 :dword; { \ }
Step1 :dword; { |- the 3 step values we switch between in arpeggio effect (0 is start value
<- we have to refesh after arpeggio) }
Step2 :dword; { / }
ctick :byte; { ticks left to retrigg not }
savNote :byte; { \ }
savInst :byte; { | - new values for notedelay ... }
SavVol :byte; { | }
ndTick :byte; { / }
end;
TInstr = array[0..16*5-1] of byte;
TInstrArray = array[1..MAX_Samples] of TInstr;
TPatternSarray = array[0..MAX_patterns] of word; { segment for every pattern }
TOrderArray = array[0..MAX_orders] of byte; { song arrangement }
TchannelArray = array[0..MAX_channels-1] of Tchannel; { all public/private data for every channel }
PArray = ^TArray;
TArray = array[0..65532] of byte;